// vue-i18n@9 版本
import { createI18n } from 'vue-i18n';

// element 内置语言包
import zhCNElement from 'element-plus/dist/locale/zh-cn.mjs'; // 中文简体
import enUSElement from 'element-plus/dist/locale/en.mjs'; // 英语
// sibionics-ui-next 内置语言包；目前仅支持 'zh-CN'、'zh-TW'、'en-US'
import zhCNSib from 'sibionics-ui-next/lib/locale/lang/zh-CN';
import enUSSib from 'sibionics-ui-next/lib/locale/lang/en-US';
// 本地语言包
import zhCNLocale from './lang/zh-CN';
import enUSLocale from './lang/en-US';

import store from '../store';

const languages = {
    'zh-CN': { ...zhCNElement, ...zhCNSib, ...zhCNLocale },
    'en-US': { ...enUSElement, ...enUSSib, ...enUSLocale },
};

export const i18n = createI18n({
    locale: store.state.language,
    fallbackLocale: 'zh-CN',
    messages: languages,
});

// 获取当前语言包，提供给 element-plus 切换语言使用
export const getLocales = (lang) => languages[lang];

// 切换当前语言类型方法封装
export const changeLang = (lang) => {
    if (!languages[lang]) {
        // eslint-disable-next-line
        console.warn(`系统中暂未配置 ${lang} 语言`);
        return;
    }
    // 修改 element 组件内部语言类型
    store.commit('updateLanguage', lang);
    // 修改本地 i18n 多语言类型
    i18n.global.locale = lang;
};

// 获取当前语言类型方法封装
export const getCurrentLang = () => i18n.global.locale;
